"""
通义千问模型集成示例
演示如何使用阿里云通义千问模型进行合同分析
"""

import os
from langchain_openai import ChatOpenAI
from langchain.schema import HumanMessage, SystemMessage

def create_qwen_llm():
    """
    创建通义千问LLM实例
    
    Returns:
        ChatOpenAI: 配置好的通义千问模型实例
    """
    llm = ChatOpenAI(
        base_url="https://dashscope.aliyuncs.com/compatible-mode/v1",
        api_key=os.getenv("DASHSCOPE_API_KEY"),
        model="qwen-max",
        temperature=0.5,
        timeout=30,  # 添加超时配置（秒）
        max_retries=2  # 添加重试次数
    )
    return llm

def analyze_contract_with_qwen(contract_content: str, analysis_type: str = "风险识别"):
    """
    使用通义千问分析合同
    
    Args:
        contract_content: 合同内容
        analysis_type: 分析类型
        
    Returns:
        str: 分析结果
    """
    llm = create_qwen_llm()
    
    # 系统提示词
    system_prompt = """你是一个专业的法律合同审核专家，具有丰富的合同分析经验。
请仔细分析合同内容，识别潜在风险，并提供专业建议。
请用中文回答，结构清晰，重点突出。"""
    
    # 用户提示词模板
    user_prompts = {
        "风险识别": """
请分析以下合同内容，识别其中可能存在的风险点：

重点关注以下方面：
1. 责任条款是否公平合理
2. 违约责任是否过重
3. 免责条款是否合理
4. 付款条件是否有风险
5. 终止条件是否明确
6. 争议解决机制是否完善

合同内容：
{content}

请按以下格式回答：
## 风险评估
- 总体风险等级：[高/中/低]
- 风险评分：[0-100分]

## 主要风险点
1. [具体风险描述]
2. [具体风险描述]

## 改进建议
1. [具体建议]
2. [具体建议]
""",
        
        "合规检查": """
请检查以下合同是否符合相关法律法规：

检查要点：
1. 是否违反《民法典》相关规定
2. 条款是否符合行业规范
3. 是否存在显失公平的条款
4. 格式条款是否合规
5. 必备条款是否齐全

合同内容：
{content}

请按以下格式回答：
## 合规性评估
- 合规等级：[合规/基本合规/存在问题]
- 合规评分：[0-100分]

## 合规问题
1. [具体问题描述]
2. [具体问题描述]

## 合规建议
1. [具体建议]
2. [具体建议]
""",
        
        "条款分析": """
请详细分析以下合同的重要条款：

分析重点：
1. 合同主体信息
2. 标的物或服务内容
3. 价款或报酬条款
4. 履行期限和地点
5. 违约责任条款
6. 争议解决条款

合同内容：
{content}

请按以下格式回答：
## 条款分析

### 基本信息
- 合同类型：
- 合同主体：
- 合同标的：

### 核心条款分析
1. **价款条款**：[分析内容]
2. **履行条款**：[分析内容]
3. **违约条款**：[分析内容]
4. **争议解决**：[分析内容]

### 条款评价
- 完整性：[评价]
- 合理性：[评价]
- 可执行性：[评价]
"""
    }
    
    # 获取对应的提示词
    user_prompt = user_prompts.get(analysis_type, user_prompts["风险识别"])
    user_content = user_prompt.format(content=contract_content)
    
    # 构建消息
    messages = [
        SystemMessage(content=system_prompt),
        HumanMessage(content=user_content)
    ]
    
    try:
        # 调用模型
        response = llm(messages)
        return response.content
    
    except Exception as e:
        return f"分析失败：{str(e)}"

def test_qwen_integration():
    """测试通义千问集成"""
    
    # 检查API密钥
    if not os.getenv("DASHSCOPE_API_KEY"):
        print("❌ 请设置DASHSCOPE_API_KEY环境变量")
        return
    
    # 测试合同内容
    test_contract = """
    软件开发服务合同
    
    甲方：北京科技有限公司
    乙方：上海软件开发有限公司
    
    根据《中华人民共和国民法典》等相关法律法规，双方就软件开发服务事宜达成如下协议：
    
    一、项目内容
    乙方为甲方开发一套企业管理系统，包括用户管理、数据统计、报表生成等功能。
    
    二、项目费用
    项目总费用为人民币50万元，分三期支付：
    1. 签约后支付30%（15万元）
    2. 项目完成50%后支付40%（20万元）
    3. 项目验收通过后支付30%（15万元）
    
    三、开发周期
    项目开发周期为6个月，自合同签署之日起计算。
    
    四、验收标准
    系统功能完整，性能稳定，符合需求文档要求。
    
    五、违约责任
    任何一方违约，应向对方支付合同总金额20%的违约金。
    
    六、争议解决
    因本合同引起的争议，双方应友好协商解决；协商不成的，提交北京仲裁委员会仲裁。
    """
    
    print("🤖 开始测试通义千问合同分析...")
    print("=" * 60)
    
    # 测试风险识别
    print("\n📊 风险识别分析：")
    print("-" * 40)
    risk_analysis = analyze_contract_with_qwen(test_contract, "风险识别")
    print(risk_analysis)
    
    print("\n" + "=" * 60)
    print("✅ 通义千问集成测试完成")

if __name__ == "__main__":
    test_qwen_integration()
